Enforcing Secure Object Initialization in Java

نویسندگان

  • Laurent Hubert
  • Thomas P. Jensen
  • Vincent Monfort
  • David Pichardie
چکیده

Sun and the CERT recommend for secure Java development to not allow partially initialized objects to be accessed. The CERT considers the severity of the risks taken by not following this recommendation as high. The solution currently used to enforce object initialization is to implement a coding pattern proposed by Sun, which is not formally checked. We propose a modular type system to formally specify the initialization policy of libraries or programs and a type checker to statically check at load time that all loaded classes respect the policy. This allows to prove the absence of bugs which have allowed some famous privilege escalations in Java. Our experimental results show that our safe default policy allows to prove 91% of classes of java.lang, java.security and javax.security safe without any annotation and by adding 57 simple annotations we proved all classes but four safe. The type system and its soundness theorem have been formalized and machine checked

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Secure Programming using a Functional Paradigm

This paper investigates the advantages of the functional language paradigm and its use in secure programming. The intended audience is software professionals from either the computer security domain or the functional language domain who have not yet considered cross-domain synthesis of ideas. Secure programming describes those practices that software developers use to provide security features ...

متن کامل

Formal Implementation of a Verification Algorithm using the B Method

The Java language is advertised as a secure language. Several components enforce the Java security, as the Java Virtual Machine (JVM) and the API. As a part of the JVM, the Java byte code verifier plays an important role in the security of the system. Therefore, its implementation has to be correct. To ensure this correctness, formal methods are used as a means of proving that the implementatio...

متن کامل

A Type System for Object Initialization in the Java Bytecode Language (summary)

In the standard Java implementation, a Java language program is compiled to Java bytecode and this bytecode is then interpreted by the Java Virtual Machine. Since bytecode may be written by hand, or corrupted during network transmission, the Java Virtual Machine contains a bytecode veriier that performs a number of consistency checks before code is interpreted. As one-step towards a formal spec...

متن کامل

A Type System for Object Initialization In the JavaTM Bytecode Language

In the standard Java implementation, a Java language program is compiled to Java bytecode and this bytecode is then interpreted by the Java Virtual Machine. Since bytecode may be written by hand, or corrupted during network transmission, the Java Virtual Machine contains a bytecode verifier that performs a number of consistency checks before code is interpreted. However, there is no formal spec...

متن کامل

Link-Time Enforcement of Confined Types for JVM Bytecode

The language-based approach to security employs programming language technologies to construct secure environments for hosting untrusted code. The recently proposed notion of confined types effectively prevents accidental reference leaks that could lead to security breaches in mobile code platforms such as Java. Enforcing a stronger notion of encapsulation than conventional object-oriented prog...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2010